package eleventh.System类;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 比如原日期：2008-10-19 10：11：30：345
 * 转换之后的日期为2008年10月19日 10时11分30秒345毫秒
 * 要想转换成这样，必须用java.text包中SimpleDateFormat类来使用
 * 首先必须定义一个完整的日期转换模板，在模板中通过指定的日期标记可以将一个日期格式中的日期数字提取出来。
 * 日期格式化模板标记：
 * y年   yyyy
 * M月份  MM
 * d月中的天数   dd
 * H一天中的小时数 24小时 HH
 * m小时中的分钟数 mm
 * s分钟中的秒数  ss
 * S毫秒数     SSS
 * SimpleDateFormat类中的常用方法
 * SimpleDateFormat(String pattern):通过一个指定的模板构造对象
 * parse(String source):将一个包含日期的字符串变为Date类型
 * formar(Date date):将一个Date类型按照指定格式转换成String类型
 */
//格式化日期操作
public class SimpleDateFormat类 {
    public static void main(String[] args) throws ParseException {
        String strDate ="2022-6-17 8:30:12.345";    //定义日期和时间的字符串
        //准备第一个模板，从字符串中提取数字
        String pat1 ="yyyy-MM-dd HH:mm:ss.SSS";
        //准备第二个模板，将提取后的日期数字变为指定的格式
        String pat2 ="yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
        //实例化模板对象
        SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
        SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
        Date d = null;
        d = sdf1.parse(strDate); //包含日期信息的字符串 parse
        System.out.println(d);
        System.out.println("使用另一种格式：");
        System.out.println(sdf2.format(d)); //format
    }
}
/**
 * 上面程序中首先用第一个模板将字符串中表示的日期数字取出，之后再使用第二个模板将这些日期数字重新转换成信的格式表示
 */
/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=56328:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 eleventh.System类.SimpleDateFormat类
Fri Jun 17 08:30:12 CST 2022
使用另一种格式：
2022年06月17日 08时30分12秒345毫秒

Process finished with exit code 0

 */